﻿<?php

class Db extends PDO
{
    private static $instance = NULL;
    /** Nom de la base de donnees */
    private static $dbname     = "projetdesign";
    /** Serveur (par defaut localhost) */
    private static $host       = "localhost";
    /** Nom d'utilisateur */
    private static $user       = "root";
    /** Mot de passe si la base de donnees en utilise un.
        Preferable si il s'agit d'un serveur en production
     */
    private static $password   = "";
    
    public function __construct() { 
           parent::__construct("mysql:host=".self::$host.";dbname=".self::$dbname, self::$user, self::$password,array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
    } 

    public static function getInstance() {
        
        if(!isset(self::$instance)){
         try{
            self::$instance = new Db();
         }catch (PDOException $e){
            echo $e;//affichage de l'exception
            
         }
         //self::$_instance->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
      }
      return  self::$instance;
        
    }


    
    /**
     * Si l'identifiant est demandé(à TRUE), on retourne l'identifiant si la requête a marché ou alors faux si ce n'est pas le cas
     * Si l'identifiant n'est pas demandé, on retourne la valeur de retour de la fonction execute($sql)
     * @param $sql requête SQL à executer
     * @param $id booléan précisant si on veut récupérer l'id
     */
    public  function execute($sql,$id = false){
            
            $resultat = self::$instance->exec($sql);
            if($id == true)
             return self::$instance->lastInsertId();
            else return $resultat;
    }
    

    /**
     * Cette fonction permet de retourner le nombre de r�sultats obtenu lors de l'execution
     * de la requ?te SQL passer en parametre.
     * 
     * @param $sql
     */
    public function foundRows($sql){

            $resultat = self::$instance->query($sql);
            if($resultat == false)
                    return 0;
            $nb=0;
            while( $ligne = $resultat->fetch(PDO::FETCH_ASSOC) ){
                    $nb++;
            }
            $resultat->closeCursor();
            return $nb;
    }

    /**
     * Cette fonction permet de retourner sous forme de tableau le premier r�sultat d'une
     * requete SQL
     * 
     * @param $sql
     */
    function getRow($sql){

            $resultat = self::$instance->query($sql);
            if($resultat == false)
            return false;
            while( $ligne = $resultat->fetch(PDO::FETCH_OBJ) ){
                    $res = $ligne;
            }
            $resultat->closeCursor();
            if(!isset($res))
                    return false;
            else
            return $res;
    }


}
?>
